package com.ruoyi.system.service.impl;

import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.Task;
import com.ruoyi.system.mapper.TaskMapper;
import com.ruoyi.system.service.ITaskService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.List;

/**
 * 任务报送Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-06-28
 */
@Service
public class TaskServiceImpl implements ITaskService 
{
    @Autowired
    private TaskMapper taskMapper;

    /**
     * 查询任务报送
     * 
     * @param id 任务报送主键
     * @return 任务报送
     */
    @Override
    public Task selectTaskById(Long id)
    {
        return taskMapper.selectTaskById(id);
    }

    /**
     * 查询任务报送列表
     * 
     * @param task 任务报送
     * @return 任务报送
     */
    @Override
    public List<Task> selectTaskList(Task task)
    {
        return taskMapper.selectTaskList(task);
    }

    /**
     * 新增任务报送
     * 
     * @param task 任务报送
     * @return 结果
     */
    @Override
    public int insertTask(Task task)
    {
        Long id=taskMapper.selectMaxId()+1L;
        task.setId(id);
        task.setState(1L);
        LocalDate currentDate = LocalDate.now();
        String currentYear = currentDate.getYear() + "";
        String taskid=taskMapper. selectMaxTaskId(currentYear);
        if(taskid==null){
            taskid=currentYear+"0001";
        }else{
            taskid=taskid.substring(4);
            taskid=incrementString(taskid,4);
            taskid=currentYear+taskid;
        }
        task.setTaskid(taskid);
        task.setRegisterPerson(SecurityUtils.getUsername());
        return taskMapper.insertTask(task);
    }

    /**
     * 修改任务报送
     * 
     * @param task 任务报送
     * @return 结果
     */
    @Override
    public int updateTask(Task task)
    {
        return taskMapper.updateTask(task);
    }

    /**
     * 批量删除任务报送
     * 
     * @param ids 需要删除的任务报送主键
     * @return 结果
     */
    @Override
    public int deleteTaskByIds(Long[] ids)
    {
        return taskMapper.deleteTaskByIds(ids);
    }

    /**
     * 删除任务报送信息
     * 
     * @param id 任务报送主键
     * @return 结果
     */
    @Override
    public int deleteTaskById(Long id)
    {
        return taskMapper.deleteTaskById(id);
    }

    public static String incrementString(String value, int length) {
        // 将字符串转换为整数
        Long intValue = Long.valueOf(value);

        // 对整数加 1
        intValue++;

        // 将新的整数转换为字符串
        String newValue = Long.toString(intValue);

        // 补零，确保字符串长度不变
        while (newValue.length() < length) {
            newValue = "0" + newValue;
        }

        return newValue;
    }
}
